
/*
CREATE TABLE TBL_CODIGOS_BARRAS (
	CONCEPTO varchar(25),
	VALOR int,
	MAX_NUM int,
	FORMATO varchar(11),
	IDENTIFICADOR varchar(2),
	FECHA_ENTREGA varchar(7)
)


INSERT INTO TBL_CODIGOS_BARRAS VALUES ('CAJAS', 0, 100, 'YYJJJDDDD', 'CA', '13269');
INTO TBL_CODIGOS_BARRAS VALUES ('PLACAS', 0, 200, 'YYYYJJJDDDD', 'PL', '13269');
UPDATE TBL_CODIGOS_BARRAS SET MAX_NUM=200 WHERE CONCEPTO='PLACAS';
DELETE FROM TBL_CODIGOS_BARRAS;
DROP TABLE TBL_CODIGOS_BARRAS;

SELECT * FROM TBL_CODIGOS_BARRAS;

exec SP_SERIE 'PLACAS';
exec SP_SERIE 'CAJAS';
*/
ALTER procedure SP_SERIE ( @CONCEPTO varchar(25))
as
	DECLARE @fecha DATETIME;
	DECLARE @dia VARCHAR(12);
	DECLARE @julianday VARCHAR(3);
	 
	SET @fecha = GETDATE();
	SET @dia = (select CONVERT(DATETIME, 
		CONVERT(VARCHAR (4), DAY(0))+'-'+
		CONVERT(VARCHAR (4), MONTH(0))+'-'+
		CONVERT(VARCHAR (4), YEAR(@fecha))
		))
	
	
	SET @julianday =  CONVERT(varchar(4),
		CASE WHEN  (DATEDIFF(dd, @dia, @fecha)) < 10
			THEN   '00' + CONVERT(VARCHAR(4),(DATEDIFF(dd, @dia, @fecha)))
			WHEN   ((DATEDIFF(dd, @dia, @fecha)) > 10 AND
					 (DATEDIFF(dd, @dia, @fecha)) < 100)
			THEN   '0' + CONVERT(VARCHAR(4),(DATEDIFF(dd, @dia, @fecha)))
			ELSE  CONVERT(VARCHAR(4),(DATEDIFF(dd, @dia, @fecha)))
			END
	)


	DECLARE @identificador VARCHAR (2);
	DECLARE @currdate VARCHAR(20);
	DECLARE @valor int;
	DECLARE @max_num int;
	DECLARE @formato VARCHAR(11);
	set @currdate = substring(CONVERT( varchar(4),YEAR(@fecha)), 3, 2) + @julianday

	
        select @formato = FORMATO, @valor = VALOR, @max_num=MAX_NUM, @identificador = IDENTIFICADOR
	from TBL_CODIGOS_BARRAS WHERE FECHA_ENTREGA=@currdate AND CONCEPTO = @CONCEPTO

	
	select @currdate;
	--if @@ROWCOUNT < 1
		if (@valor+1 > @max_num)
			print 'Supera el maximo';
		else 
		begin
			UPDATE TBL_CODIGOS_BARRAS SET VALOR = VALOR + 1 WHERE FECHA_ENTREGA = @currdate AND CONCEPTO = @CONCEPTO;
			
			DECLARE @formatted_code VARCHAR(11);

			SET @formatted_code = (SELECT REPLACE(@formato, 'YYYY', CONVERT( varchar(4),YEAR(@fecha))))
			SET @formatted_code = (SELECT REPLACE(@formatted_code, 'YY', substring(CONVERT( varchar(4),YEAR(@fecha)), 3, 2)))
			SET @formatted_code = (SELECT REPLACE(@formatted_code, 'JJJ', @julianday))
			SET @formatted_code = (SELECT REPLACE(@formatted_code, 'DDDD', RIGHT('0000' + CONVERT(VARCHAR(4), @valor), 4)))
			
			SELECT @identificador + @formatted_code    
		end
return